package com.sun.common.core.model.dto;


import com.sun.common.core.constant.CodeEnum;
import com.sun.common.core.constant.ICodeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;


@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper=true)
public class SimpleVO<T> extends RestDTO {
    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = -7281269010610224891L;

    /**
     *  是否发布接口
     */
    @ApiModelProperty(value = "是否发布接口", required = true)
    private Boolean publishFlag;

    /**
     * 返回的数据
     */
    @ApiModelProperty(value = "返回的响应数据", required = true)
    T data;

    /**
     * 构造器
     *
     * @param codeEnum code
     */
    public SimpleVO(ICodeEnum codeEnum) {
        super(codeEnum);
        this.setData(null);
        this.setPublishFlag(true);
    }
    
    /**
     * 构造器
     *
     * @param data 返回的数据
     */
    public SimpleVO(T data) {
        super(CodeEnum.SUCCESS);
        this.setData(data);
        this.setPublishFlag(true);
    }

    /**
     * 构造器
     *
     * @param message 自定义消息
     * @param codeEnum code
     */
    public SimpleVO(String message, ICodeEnum codeEnum) {
        super(message, codeEnum);
        this.setData(null);
        this.setPublishFlag(true);
    }

    /**
     * 构造器
     *
     * @param message  自定义消息
     * @param serno    流水号
     * @param codeEnum code
     * @return {@link  }
     * @author tengzhiqiang
     * @since 2022/08/25
     */
    public SimpleVO(String message,String serno, ICodeEnum codeEnum) {
        super(serno,message, codeEnum);
        this.setData(null);
        this.setPublishFlag(true);
    }

    /**
     * 构造器
     *
     * @param publishFlag 是否发布接口
     */
    public SimpleVO(T data, Boolean publishFlag) {
        super(CodeEnum.SUCCESS);
        this.setData(null);
        this.setPublishFlag(false);
    }

}
